Как работает сеть
- 1Сайт создаётся на обычном узле. Домен, например welcome.wap, записывается там, где лежит сам сайт.
- 2Имя домена указывает на три узла кольца. У них хранится короткая запись: какой домен и на каком адресе.
- 3В браузере достаточно одного независимого узла. Он по маршрутам кольца доходит до записи и называет адрес.
- 4Браузер открывает сайт уже на узле, где тот размещён. Список сайтов браузер у себя не хранит и в сеть узлом не входит.
Общие зоны
Список зон один и тот же на каждом узле. Отдельного хозяина у зоны нет: имя в ней может завести любой узел.
- .wap
- .get
- .pit
- .gr
- .lin
- .for
- .ww
- .open
- .ref
- .rt
- .ph
- .my
- .lik
- .cm
- .tex
- .hos
- .eml
Локальная зона .lock остаётся на своём узле. Другие локальные зоны узел заводит у себя.
Браузер
Адрес независимого узла записывается в настройках, в data/nodes.json. Можно указать один узел или несколько.
Браузер спрашивает их одновременно и берёт первый названный адрес. Чем больше разных узлов вписано, тем выше шанс, что нужное имя окажется у кого-то из них. Если все видят одну и ту же часть сети, лишние адреса почти ничего не добавляют.
Независимый узел
Он не размещает сайты. На его странице видны IP, порт и число известных узлов. Для запуска хватает одного ядра, 1 ГБ памяти, 10 ГБ диска и публичного IPv4. Если записей станет очень много, спокойнее дать 2 ГБ памяти.
Порты: 47000/tcp узел, 47001/udp обнаружение, 5353/udp домены, 4790/tcp страница. Если при запуске порт занят, узел закрывает процесс, который его держит, и садится на тот же номер.
Вопросы
Где лежит сайт?
На узле, где его создали. По сети ходит не сам сайт, а запись: домен и адрес этого узла.
Кто хранит адрес домена?
Три узла, ближайшие к числу, которое получается из имени. Так миллион имён не собирается в один список на каждой машине.
Как узел находит запись, если не знает всю сеть?
Он держит маршруты: на каждое направление кольца до 20 узлов. Запрос идёт к более близким, до шести шагов, пока не дойдёт до тех, у кого лежит имя.
Сайт откроется среди миллиарда имён?
Откроется, если запись дошла до трёх узлов кольца и от независимого узла из настроек до них есть маршрут. Если этой записи в круге нет, браузер пишет, что домен не открылся, и дальше всю сеть не обходит.
Что узлы передают друг другу?
При соединении узел называет себя и свои сайты. Дальше расходятся части списка известных доменов, страницы адресов узлов и ответы на вопрос «кто держит этот домен». Сами страницы сайтов по этому списку не пересылаются.
Сколько узлов и имён помнит один узел?
В опросе сети он держит до 50 000 адресов. Записей о доменах на кольце — до 500 000. Маршрутов гораздо меньше: это пути, а не полный каталог.
Нужно ли браузеру быть узлом?
Нет. Он только спрашивает адрес домена и открывает сайт. В список узлов браузер не записывается.